home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
031-040
/
amok31
/
task&process
/
task&process.dok
< prev
next >
Wrap
Text File
|
1993-11-04
|
4KB
|
71 lines
(*---------------------------------------------------------------------------
:Program. Task & Process
:Contants. Export a Procedure who starts Procedures as Processes
:Remark. Ported from C to Modula-2
:History. C-Edition by Arno Gölzer
:History. V1.0, Having spent a lot of time meditating
:History. V2.1, Markus Peuckert, November 89
:Author. Markus Peuckert
:Address. Schützenstr. 50, D-3550 Marburg, West-Germany,
:Copyright. PD
:Language. Modula-2
:Translator. M2Amiga V3.2d
---------------------------------------------------------------------------*)
Dies sind zwei Umsetzungen aus C-Versionen von Arno Gölzer aus dem
Amiga-Magazin 11.89.
Task.mod :
Hier wird eine Prozedur als Task gestartet und erhält vom
Hauptprogramm eine Message, worauf der Task geweckt wird und
einige Rechtecke in einem Window zeichnet.
Soll eine Prozedur als Task gestartet werden, so folgendes
beachtet werden:
- Der Task MUß vor dem Hauptprogramm abgearbeitet (fertig)
sein.
- Es dürfen keine Dos-Operationen durchgeführt werden.
Das gilt auch für Aufrufe von WriteString etc. aus
InOut oder Terminal, sonst GURU.
- Der Task muß anschließend wieder entfernt werden.
===> Anmerkung:
Nach Ablauf des Hauptprogrammes und des Tasks
versuchte ich den Task mittels DeleteTask wieder
zu entfernen, was aber in einem GURU endete.
Daraufhin fragte ich vor dem Aufruf von DeleteTask
mittels FindTask ab, ob überhaupt noch ein
Task da war. Ergebnis: Nix da! Es ist also davon
auszugehen, daß M2Amiga nach Ablauf des Tasks
den Task selbstständig löscht, oder? Also ich
weiß nich weiter.
Die paar Zeilen in Cleanup sind also nur noch Schmuck
und werden garnicht mehr angesprungen. Der gesamte
Speicherplatz wird komplett zurückgegeben, das System
scheint nach Programmablauf völlig wiederhergestellt
zu sein. Vielleicht kann mir der geneigte und kundige
Leser/Programmierer eine Lösung schreiben!
Process.mod :
Dieses Modul exportiert eine Prozedur, mit der man eine Prozedur
(starker Satz, wa?) als PROZEß starten kann. Es fallen somit die
Einschränkungen wie für Task.mod weg. Man kann also auch
Dos-Funktionen in der als Prozeß laufenden Prozedur aufrufen.
Allerdings sollte man darauf achten, daß auch der Prozeß vor
dem Hauptprogramm "fertig" ist. Der Rechner kackt zwar nicht
ab, aber der Prozeß ist nicht gelöscht worden, sodaß er immer
noch lustig im System herumgeistert. Richtet keinen Schaden an,
belegt aber Speicher --> ich find's einfach lästig.
Noch etwas:
In dem Testprogramm "ProcTest.mod" wird gezeigt, wie man mittels
Signalen zwischen den Tasks kommunizieren kann. Mit "Signal" wird dem
neuen Prozeß eine Nachricht übermittelt, der mit "Wait" darauf
wartet. Über die die LONGSET-Maske kann man dann angeben,
welche Signale man wie verarbeiten möchte.
Zum Schluß:
Es ist doch immer wieder erstaunlich, wie häufig dieser blöde
Kasten meditieren muß. Ein Hoch auf UNIX, alles wird abgefangen!
Nu abber echt Schluß, mit dem Programmiererspruch:
Dr' Markus kimmet hühte nit nüß, 's rähjent zoh vähle!